#ifndef ADAPTIVEALGORITHMDESIGNERBASE_H
#define ADAPTIVEALGORITHMDESIGNERBASE_H

#include <QDialog>

#include "SimInterface/IConfigurable.h"

/**
    Klasa abstrakcyjna konfiguratora dla metod adaptacyjnych.
*/
class AdaptiveAlgorithmDesignerBase : public QDialog
{
    Q_OBJECT

public:
    explicit AdaptiveAlgorithmDesignerBase(QWidget *parent) : QDialog(parent) {}
    virtual ~AdaptiveAlgorithmDesignerBase() {}

    /**
        Wiąże obiekt algorytmu adaptacyjnego z tym widgetem.
        Zadaniem klasy implementującej jest odświeżenie interfejsu użytkownika
        po dołączeniu obiektu, tak by przedstawiał faktyczne ustawienia.
    */
    virtual void attachAlgorithm(RafMat::SimInterface::IConfigurableSPtr ctrl) = 0;

    /**
        Zatwierdza zmiany w ustawieniach algorytmu.
        Metoda wywoływana po wciśnięciu odpowiedniego przycisku zatwierdzającego zmiany.
    */
    virtual void applySettings() = 0;
};


#endif // ADAPTIVEALGORITHMDESIGNERBASE_H
